#ifndef SERIALINATOR_H
#define SERIALINATOR_H

#include <string>

class SerialInator {
	private:
		int _posActual;
	public:
		SerialInator();
		~SerialInator();
		
		// Permite cambiar el modo de serializar a des-serializar o visceversa
		void reset();

		// Devuelve un puntero a la posicion actual que se esta procesando del buffer señalado
		char* getPtroActual(char* dataBuffer);

		// Serializa cada tipo de dato de la forma correcta
		void serializar(char* &arrBytes, char c);
		void serializar(char* &arrBytes, unsigned long int valor);
		void serializar(char* &arrBytes, std::string cadena);

		// Des-serializa los tipos de datos del buffer
		void desSerializar(char* arrBytes, char &c);
		void desSerializar(char* arrBytes, unsigned long int &valor);
		void desSerializar(char* arrBytes, std::string &cadena);
};


#endif
